在請朋友測試吃吃記帳時,她提出一個問題:「如果使用者只付費一個月,那麼一個月之後,要怎麼中止對使用者的服務呢?」
這個簡單的問題,讓我突然意識到,我在權限管理設計上,有一個重大的漏洞。我最開始的想法是,當使用者試用完畢,或是取消訂閱後,我可以把對方在 Line 官方帳號中設置成黑名單,這樣就無法繼續使用吃吃記帳的服務了。
可是進行測試後,我發現這個方法並不能真正終止服務,無論是將對方「刪除」還是「放入黑名單」,使用者依然能夠在 Line 對話中呼叫 Bot,繼續使用服務並消耗我的 credits。
為了釐清原因,我更深入了解 Line 官方帳號與 Coze 的設定。
我發現,Line 官方帳號對於「不想繼續交流」的好友,只能進行「管理員方面」的限制,例如將其放入黑名單。不過,黑名單中的使用者仍然可以傳訊息到帳號,只是訊息會被列入「垃圾訊息」,在一般管理介面上看不到。
如果想要完全終止對話,只能由使用者端單方面對官方帳號進行封鎖。
由於 Coze 的 Webhook 綁定了整個 Line 官方帳號,並不能針對特定使用者解除連結,因此無法對黑名單中的使用者停止服務。
這樣的設計讓我了解到,平台的設定讓我很難有效地管理使用者的存取權限,並且存在更大的潛在風險。例如當有人惡意大量發送訊息,導致 Credits 被快速消耗時,我卻無法阻止、封鎖對方。
為了避免這個問題對吃吃記帳的未來造成負面影響,我想出了幾個潛在的解決方案,並對其進行了分析:
經過研究後,我了解到 Line 平台方面無法針對這個問題進行調整,這也正是我先前在風險管理篇中提到的,依賴外部平台的隱憂之一。
為了彌補這個缺陷,我發現可以從 Coze 端進行阻擋功能的設計。不過,由於這部分尚未實踐,因此先分享我的想法:
我打算在 Bot 中新增一個 workflow,當每個使用者新加入 Line 帳號,並發送第一條訊息時,解析他們的 webhook 資訊,從中取得用戶的 Line User ID,並將其存入資料庫中。這部分的實作需要一定的程式能力,我計畫讓 Coze Assistant 幫忙撰寫這段程式碼,但還需測試來確認程式的正確性。
另一個比較簡單的方法是讓使用者自己設定一個帳號名稱,不過,要怎麼確定帳號是唯一、不重複的,又是另一個困難點。
有了每個使用者的獨立 User ID,我就可以進行詳細的權限管理了。這包括:設定試用期與訂閱期的起始與終止時間、管理訂閱狀態(有效/無效)、以及黑名單管理等等,都可以在資料庫中管理。
接下來,每次 Bot 與使用者互動時,都會根據該使用者的 ID,查詢資料庫中的訂閱狀態。
如果使用者的訂閱已過期或狀態為黑名單,則 Bot 會回傳預設的提示訊息(例如:「您的服務已到期,請聯繫管理者以繼續使用服務」),而不執行後續的流程。
我有和 Coze Assistant 確認過,查詢狀態沒有問題,只要不執行與 LLM 相關的操作,例如計算熱量和提供飲食建議,就不會消耗 Credits。
目前這個身份檢驗機制只是我暫時想到的解決方案。從長期發展的角度來看,我需要更深入地研究平台的功能,找出更完善的方式來完全解決這個問題。比如,深入學習 Line Bot 的相關知識(他們已經有一套成熟的解決方案,但需要一定的程式基礎),或是在 Coze 上開發相關 Plugins,以提升對使用者管理的靈活性。
雖然這個過程有些棘手,但是我很慶幸能提前發現這個問題,並在解決的過程中,學習到更多關於 Line 和 Coze 的相關知識。同時,這次經驗也幫助我理解如何在技術與時間受限的情況下,靈活運用現有資源,快速找出可行的解決方案,並進行妥善的評估。
我想,這正是一位專案與產品經理在面對挑戰時,需要具備的判斷力與執行能力。